package sctu.edu.java.year2016.team07.nieying.day20160607.chapter12_1;

/**
 * Created by Administrator on 2016/6/12 0012.
 */
import javax.swing.*;
import javax.swing.plaf.LabelUI;
import javax.swing.plaf.metal.MetalProgressBarUI;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.concurrent.TimeUnit;
/**
 * Created by MyWorld on 2016/3/24.编写程序，实现读取文件时出现一个表示读取进度的进度条，
 * 可使用javax.swing包提供的输入流类ProgressMonitorInputStream
 *
 */
public class Progress {
    public static void main(String[] args) throws UnsupportedLookAndFeelException {
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                final JFrame frame = new JFrame("nieying");        //对对话框命名为‘nieying’
                frame.setSize(500, 250);                           //设置对话框大小 宽500 高250
                frame.setLocationRelativeTo(null);                  //使窗口居中
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//frame.setDefaultCloseOperation()
                                                                   // 是设置用户在此窗体上发起 "close" 时默认执行的操作
                                                                 //使用 System exit 方法退出应用程序。仅在应用程序中使用。
                frame.setLayout(new FlowLayout());               //设置窗口布局
                final JProgressBar progressBar = new JProgressBar();   //对进度条进行设置
                progressBar.setOrientation(JProgressBar.HORIZONTAL);   //创建具有方向型的进度条
                progressBar.setSize(200, 100);                    //设置进度条的大小 宽200 高100
                progressBar.setMinimum(0);                            //进度最小值为0
                progressBar.setMaximum(100);                       //进度最大值为100
                progressBar.setBorderPainted(true);
                progressBar.setUI(new MetalProgressBarUI());
                progressBar.setBackground(Color.red);        //进度条背景为红色
                progressBar.setForeground(Color.yellow);     //进度条进度为黄色
                progressBar.setStringPainted(true);
                frame.add(progressBar);
                JButton btn = new JButton("开始进度！");
                btn.addActionListener(new ActionListener() {

                    public void actionPerformed(ActionEvent e) {
                        new Thread((new Runnable() {          //Thread的固定接口

                            public void run() {
                                for (int i = 0; i <= 10; i++) {
                                    final int finalI = i;
                                    SwingUtilities.invokeLater(new Runnable() {

                                        public void run() {
                                            progressBar.setValue(finalI * 10);
                                        }
                                    });
                                    try {
                                        TimeUnit.SECONDS.sleep(1);//线程问题 将1毫秒转换成0.001秒
                                    } catch (InterruptedException e1) {
                                        e1.printStackTrace();
                                    }
                                }
                            }
                        })).start();
                    }
                });                frame.add(btn);
                frame.setVisible(true);             //把图形设置为可见
            }
        });
    }
}